XML parser
思想を大別する
DOM型
まず全要素を読み込んで、メモリ上にTreeを構築した上で処理する
Stream型
dataを先頭から読んで行き、要素を見つける度に順番に処理していく
Stream型のツラさ
XML のような木構造のデータをいじろうと思ったとき、まず思いつくのは、根っこから順番に要素をたどりつつ処理していく方法です。 しかし、この方法は案外と融通が利きません。 常に部分木だけを見ればいい仕事なら気楽なのですが、親の要素に戻ったり、兄弟要素にアクセスしたりする必要があるときは、 「いま木全体のどこを処理してるか」という情報を持ち歩くしかないからです。 そして、「いま木全体のどこを処理してるか」を意識しながらコードを書くには、かなりの精神力が要求されます。ref